package cn.gson.springboot.controllers;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

import com.alibaba.fastjson.JSONArray;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

import cn.gson.springboot.model.dao.UserDAO;
import cn.gson.springboot.model.mapper.CkMapper;
import cn.gson.springboot.model.pojos.Role;
import cn.gson.springboot.model.pojos.User;
import cn.gson.springboot.model.service.ChufangService;
import cn.gson.springboot.model.service.CkService;
import cn.gson.springboot.model.service.FankuService;
import cn.gson.springboot.model.service.GrantService;
import cn.gson.springboot.model.service.PDService;
import cn.gson.springboot.model.service.RukuService;
import cn.gson.springboot.model.service.ShengqingService;
import cn.gson.springboot.model.service.TuihuoService;
import cn.gson.springboot.model.service.Userservice;
import cn.gson.springboot.model.service.ZhichuService;
import cn.gson.springboot.model.vo.ChufangVO;
import cn.gson.springboot.model.vo.FkdrugsVO;
import cn.gson.springboot.model.vo.FunctionVo;
import cn.gson.springboot.model.vo.InventoryVO;
import cn.gson.springboot.model.vo.RoleVo;
import cn.gson.springboot.model.vo.RufangVO;
import cn.gson.springboot.model.vo.SqdrugsVO;
import cn.gson.springboot.model.vo.TuihuoyfVO;
import cn.gson.springboot.model.vo.UserVO;

@Controller
@SessionAttributes({ "yonghu", "ids", "funs", "yh", "user", "fts" }) // session的名字

public class MainController {

	@Autowired
	private CkService ck;
	@Autowired
	private RukuService rk;
	@Autowired
	private ZhichuService zc;
	@Autowired
	private FankuService fm;
	@Autowired
	private ShengqingService sq;
	@Autowired
	private ChufangService cf;
	@Autowired
	private TuihuoService tf;
	@Autowired
	private PDService pd;
	@Autowired
	private Userservice us;
	@Autowired
	private UserDAO ud;
	@Autowired
	private GrantService gs;

	/**
	 * 首页
	 */
	@RequestMapping("main")
	public void main(Model model, HttpSession session) {
		// 一级
		model.addAttribute("fts", gs.allFirstFunction());
		// 这是2级
		model.addAttribute("funs", gs.allFunctionByUser());

		User u = (User) session.getAttribute("user");
		model.addAttribute("yh", u);
		System.out.println("用户名是：" + u.getUserName());
		// 用户登录时，查询该用户所有的功能列表，并且去重
		model.addAttribute("yonghu", gs.allFunIdByUser(u.getUserId()));

	}

	@RequestMapping("yaofangzhuye")
	public void yfzy() {
	}

	// 连表查询所有药品
	@RequestMapping("yaofangchaxun")
	@ResponseBody
	public Map<String, Object> yfzychaxun(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq != null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = ck.cxsy(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}
	// 连表查询所有药品
	@RequestMapping("cfchaxun")
	@ResponseBody
	public Map<String, Object> cfchaxun(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq!=null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = cf.cxmhsy(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}
	// 连表查询所有药品
		@RequestMapping("bmmhcx")
		@ResponseBody
		public Map<String, Object> bmmhcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
				String nameq) {
			System.out.println("名字" + nameq);
			if (nameq != null) {
				if ("".equals(nameq.trim())) {
					nameq = null;
				}
			}

			// 进行分页
			Page<Object> pg = PageHelper.startPage(page, rows);
			List<Map<String, Object>> aa = cf.bmmhcx(nameq);

			// 进行数据格式转换和封装
			Map<String, Object> map = new HashMap<>();
			map.put("total", pg.getTotal());// 封装总记录数
			map.put("rows", aa);// 封装当前页的内容
			return map;
		}
	// 连表查询所有药品
	@RequestMapping("mhcxyp")
	@ResponseBody
	public Map<String, Object> mhcxyp(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq != null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = ck.mhcxblyp(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 连表查询所有药品
	@RequestMapping("sjcx")
	@ResponseBody
	public Map<String, Object> sjcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq != null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = rk.sjcx(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}
	
	// 连表查询所有药品
	@RequestMapping("sqsjcx")
	@ResponseBody
	public Map<String, Object> sqsjcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq != null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = sq.sqsjcx(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}
	
	// 连表查询所有药品
	@RequestMapping("fksjcx")
	@ResponseBody
	public Map<String, Object> fksjcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
			String nameq) {
		System.out.println("名字" + nameq);
		if (nameq != null) {
			if ("".equals(nameq.trim())) {
				nameq = null;
			}
		}

		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = fm.fksjcx(nameq);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}
	
	// 连表查询所有药品
		@RequestMapping("ylkcx")
		@ResponseBody
		public Map<String, Object> ylkcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
				String nameq) {
			System.out.println("名字" + nameq);
			if (nameq != null) {
				if ("".equals(nameq.trim())) {
					nameq = null;
				}
			}

			// 进行分页
			Page<Object> pg = PageHelper.startPage(page, rows);
			List<Map<String, Object>> aa = zc.ylkcx(nameq);

			// 进行数据格式转换和封装
			Map<String, Object> map = new HashMap<>();
			map.put("total", pg.getTotal());// 封装总记录数
			map.put("rows", aa);// 封装当前页的内容
			return map;
		}
		@RequestMapping("bmidcx")
		@ResponseBody
		public Map<String, Object> bmidcx(@RequestParam("page") int page, @RequestParam("rows") int rows,
				String nameq) {
			System.out.println("名字" + nameq);
			if (nameq != null) {
				if ("".equals(nameq.trim())) {
					nameq = null;
				}
			}

			// 进行分页
			Page<Object> pg = PageHelper.startPage(page, rows);
			List<Map<String, Object>> aa = zc.bmidcx(nameq);

			// 进行数据格式转换和封装
			Map<String, Object> map = new HashMap<>();
			map.put("total", pg.getTotal());// 封装总记录数
			map.put("rows", aa);// 封装当前页的内容
			return map;
		}
		
		@RequestMapping("mhcxyh")
		@ResponseBody
		public Map<String, Object> mhcxyh(@RequestParam("page") int page, @RequestParam("rows") int rows,
				String nameq) {
			System.out.println("名字" + nameq);
			if (nameq != null) {
				if ("".equals(nameq.trim())) {
					nameq = null;
				}
			}

			// 进行分页
			Page<Object> pg = PageHelper.startPage(page, rows);
			List<Map<String, Object>> aa = us.mhcxyh(nameq);

			// 进行数据格式转换和封装
			Map<String, Object> map = new HashMap<>();
			map.put("total", pg.getTotal());// 封装总记录数
			map.put("rows", aa);// 封装当前页的内容
			return map;
		}
		
		@RequestMapping("pdmccx")
		@ResponseBody
		public Map<String, Object> pdmccx(@RequestParam("page") int page, @RequestParam("rows") int rows,
				String nameq) {
			System.out.println("名字" + nameq);
			if (nameq != null) {
				if ("".equals(nameq.trim())) {
					nameq = null;
				}
			}

			// 进行分页
			Page<Object> pg = PageHelper.startPage(page, rows);
			List<Map<String, Object>> aa = pd.pdmccx(nameq);

			// 进行数据格式转换和封装
			Map<String, Object> map = new HashMap<>();
			map.put("total", pg.getTotal());// 封装总记录数
			map.put("rows", aa);// 封装当前页的内容
			return map;
		}
	
	// 连表查询所有药品
	@RequestMapping("yaofangshenqing")
	@ResponseBody
	public Map<String, Object> yaofangshenqing(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = ck.cxblyp();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 药房申请表
	@RequestMapping("yaofangsq")
	@ResponseBody
	public String yfsq(SqdrugsVO vo) {
		try {
			ck.saveOrder(vo);
			return "申请成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "申请 失败";
		}
	}

	// 药房反库表
	@RequestMapping("yaofangfk")
	@ResponseBody
	public String yffk(FkdrugsVO vo) {
		try {
			ck.fankuOrder(vo);
			return "反库成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "反库失败";
		}
	}

	@RequestMapping("chufangkaiyao")
	public void chufangkaiyao() {

	}

	@RequestMapping("chufangky")
	@ResponseBody
	public Map<String, Object> chufangky(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = cf.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 药房发药
	@RequestMapping("yffayao")
	@ResponseBody
	public Map<String, Object> yffayao(@RequestParam("page") int page, @RequestParam("rows") int rows, int chufangid) {
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = cf.cxxq(chufangid);
		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;

	}

	// 药品支出表
	@RequestMapping("yaopinzhichu")
	@ResponseBody
	public String yaopinzhichu(ChufangVO vo) {
		try {
			cf.tjxq(vo);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}
	}

	// 处方药品自动费发药
	@RequestMapping("yaopinzd")
	@ResponseBody
	public String yaopinzd(ChufangVO vo) {
		try {
			cf.zdfy(vo);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}
	}

	// 部门药品自动费发药
	@RequestMapping("bmyaopinzd")
	@ResponseBody
	public String bmyaopinzd(ChufangVO vo) {
		try {
			cf.bmzdfy(vo);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}
	}

	// 部门详情单
	@RequestMapping("bmsuoyou")
	@ResponseBody
	public Map<String, Object> bmsuoyou(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = cf.bmsy();
		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;

	}

	// 部门详情
	@RequestMapping("bmfayao")
	@ResponseBody
	public Map<String, Object> bmfayao(@RequestParam("page") int page, @RequestParam("rows") int rows, int xqid) {
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = cf.bmxq(xqid);
		System.out.println("请领-----" + aa);
		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;

	}

	// 部门支出表
	@RequestMapping("bumenzhichu")
	@ResponseBody
	public String bumenzhichu(ChufangVO vo) {
		try {
			cf.bmxq(vo);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}
	}

	@RequestMapping("rufang")
	public void rufang() {

	}

	// 部门详情
	@RequestMapping("rukusy")
	@ResponseBody
	public Map<String, Object> rukusy(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = rk.cxsy();
		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 部门详情
	@RequestMapping("rukusyyp")
	@ResponseBody
	public Map<String, Object> rukusyyp(@RequestParam("page") int page, @RequestParam("rows") int rows, int sqid) {
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = rk.cxypsy(sqid);
		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("ypxzjl")
	@ResponseBody
	public String ypxzjl(RufangVO vo) {
		try {
			rk.saveOrder(vo);
			return "入库成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "入库失败";
		}
	}

	@RequestMapping("cw_adjustment")
	public void cw_adjustment() {

	}

	@RequestMapping("xzyp")
	public void xzyp() {

	}

	@RequestMapping("shenqing")
	public void shenqing() {
	}

	// 连表查询所有药品
	@RequestMapping("sqjls")
	@ResponseBody
	public Map<String, Object> sqjls(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = sq.sqsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 连表查询所有药品
	@RequestMapping("sqypsy")
	@ResponseBody
	public Map<String, Object> sqypsy(@RequestParam("page") int page, @RequestParam("rows") int rows, int sqid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = sq.sqypsy(sqid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	
	@RequestMapping("fanku")
	public void fanku() {
	}

	// 连表查询所有药品
	@RequestMapping("fkjl")
	@ResponseBody
	public Map<String, Object> fkjl(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = fm.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("fkypjl")
	@ResponseBody
	public Map<String, Object> fkypjl(@RequestParam("page") int page, @RequestParam("rows") int rows, int fkid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = fm.cxypsy(fkid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("zhichu")
	public void zhichu() {

	}

	@RequestMapping("zcjl")
	@ResponseBody
	public Map<String, Object> zcjl(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = zc.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("zcypjl")
	@ResponseBody
	public Map<String, Object> zcypjl(@RequestParam("page") int page, @RequestParam("rows") int rows, int cfid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = zc.cxypsy(cfid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("bmzcjl")
	@ResponseBody
	public Map<String, Object> bmzcjl(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = zc.bmsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("bmjlxq")
	@ResponseBody
	public Map<String, Object> bmjlxq(@RequestParam("page") int page, @RequestParam("rows") int rows, int sqid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = zc.bmypsy(sqid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 部门支出表
	@RequestMapping("yptuihuo")
	@ResponseBody
	public String yptuihuo(TuihuoyfVO vo) {
		try {
			zc.tjxq(vo);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}

	}

	@RequestMapping("tuihuo")
	public void tuihuo() {

	}

	@RequestMapping("ypth")
	@ResponseBody
	public Map<String, Object> ypth(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = tf.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("ypsy")
	@ResponseBody
	public Map<String, Object> ypsy(@RequestParam("page") int page, @RequestParam("rows") int rows, int thid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = tf.ypsy(thid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("pandian")
	public void pandian() {

	}

	@RequestMapping("pdsy")
	@ResponseBody
	public Map<String, Object> pdsy(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = pd.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("pdxq")
	@ResponseBody
	public Map<String, Object> pdxq(@RequestParam("page") int page, @RequestParam("rows") int rows, int pdid) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = pd.pdxq(pdid);

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	// 部门支出表
	@RequestMapping("pdyp")
	@ResponseBody
	public String pdyp(InventoryVO vo) {
		try {
			pd.saveOrder(vo);
			return "盘点成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "盘点失败";
		}

	}

	@GetMapping("denglu")
	public void denglu() {

	}

	
	//退出登录
	@PostMapping("logout")
	@ResponseBody
	public void logout(HttpSession session,SessionStatus st) {
		session.removeAttribute("user");
		session.invalidate();
		st.setComplete();
	}
	
	// 登录
	@PostMapping("denglu") 
	public String zydenglu(String userName, String userPwd, Model m) {
		System.out.println("a" + userName);
		System.out.println("b" + userPwd);
		User u = us.saveOrder(userName, userPwd);
		if (u != null) {
			System.out.println("登录成功");
			m.addAttribute("user", u);
			return "redirect:main";
		} else {
			System.out.println("密码错误");
			return "redirect:denglu";
		}

	}


	@RequestMapping("quanxian")
	public void quanxian() {

	}

	@RequestMapping("yhgl")
	@ResponseBody
	public Map<String, Object> yhgl(@RequestParam("page") int page, @RequestParam("rows") int rows) {
		// 进行分页
		Page<Object> pg = PageHelper.startPage(page, rows);
		List<Map<String, Object>> aa = us.cxsy();

		// 进行数据格式转换和封装
		Map<String, Object> map = new HashMap<>();
		map.put("total", pg.getTotal());// 封装总记录数
		map.put("rows", aa);// 封装当前页的内容
		return map;
	}

	@RequestMapping("yhxg")
	@ResponseBody
	public String yhxg(int yhid) {
		try {
			us.cxxq(yhid);
			return "重置成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "重置失败";
		}
		
	}
	@RequestMapping("yhxga")
	@ResponseBody
	public JSONArray yhxga(int yhid) {
		JSONArray ll=us.cxxqa(yhid);
		return ll;
		
	}
	@RequestMapping("qcjs")
	@ResponseBody
	public String qcjs(int yhid) {
		try {
			us.qcjs(yhid);
			return "清除成功！！！";
		} catch (Exception e) {
			e.printStackTrace();
			return "清除失败";
		}
	}

	//修改密码
	@RequestMapping("xgmm")
	@ResponseBody
	public String xgmm(int yhid,String pwd,String pwds) {
		System.out.println("123：" + yhid);
		try {
			User u = us.xgmm(yhid,pwd,pwds);
			return "修改成功！";
		} catch (Exception e) {
			e.printStackTrace();
			return "修改失败";
		}

	}
	
	
	@RequestMapping("xgxx")
	@ResponseBody
	public String xgxx(int yhid, String yhname, String phone, String zt, int xzksa) {
		System.out.println("状态" + zt);
		try {
			us.xgxx(yhid, yhname, phone, zt, xzksa);
			return "发药成功";
		} catch (Exception e) {
			e.printStackTrace();
			return "发药失败";
		}
	}

	@RequestMapping("xzyh")
	@ResponseBody
	public String xzyh(String xzname, int xzage, String xzsex, String xzphone, String xzsfz, String xzzt, int xzkeshi) {
		System.out.println("mz" + xzkeshi);
		try {
			User d=us.pccf(xzsfz);
			if(d!=null) {
				return "身份证重复！！！";
			}else {
				us.xzyh(xzname, xzage, xzsex, xzphone, xzsfz, xzzt, xzkeshi);
				return "新增用户成功！！！";
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			return "新增失败！！！";
		}
	}

	@RequestMapping("index")
	public void index() {

	}

	@RequestMapping("shouquan")
	public void shouquan() {

	}

	/**
	 * 授权
	 * 
	 * @param roleId
	 * @param funIds
	 */
	@RequestMapping("sava-grant")
	@ResponseBody
	public void saveGrant(int roleId, String funIds) {
		List<Integer> yonghu = new ArrayList<>();
		// funIds---[5,6,7]
		StringBuffer sb = new StringBuffer(funIds);
		sb.deleteCharAt(sb.length() - 1);
		sb.deleteCharAt(0);
		// 切割5,6,7
		for (String s : sb.toString().split(",")) {
			yonghu.add(Integer.parseInt(s));
		}
		gs.saveGrant(roleId, yonghu);
	}

	/**
	 * 授权
	 * 
	 * @param roleId
	 * @param funIds
	 */
	@RequestMapping("yhsqa")
	@ResponseBody
	public void yhsqa(int userId, String funIdss) {
		List<Integer> yonghu = new ArrayList<>();
		// funIds---[5,6,7]
		StringBuffer sb = new StringBuffer(funIdss);
		sb.deleteCharAt(sb.length() - 1);
		sb.deleteCharAt(0);
		// 切割5,6,7
		for (String s : sb.toString().split(",")) {
			yonghu.add(Integer.parseInt(s));
		}
		gs.yhsqa(userId, yonghu);
	}

	@RequestMapping("init-thirdfuns")
	@ResponseBody
	public JSONArray initThirdfuns(@RequestParam("funId") int parentId, HttpSession session) {
		User a = (User) session.getAttribute("yh");
		return gs.allThirdFuns(a.getUserId(), parentId);
	}

	@RequestMapping("role-list")
	@ResponseBody
	public List<Role> roleList() {
		return gs.roleList();
	}

	@RequestMapping("init-grant")
	@ResponseBody
	public List<FunctionVo> initGrant(int roleId) {
		return gs.grantList(roleId);
	}

	@RequestMapping("yhsx")
	@ResponseBody
	public List<RoleVo> yhsx(int userId) {
		return gs.sqjs(userId);
	}
	
	//新增角色
	@RequestMapping("xzjs")
	@ResponseBody
	public String xzjs(String xzname) {
		gs.xzjs(xzname);
		return "新增成功";
	}
}
